package com.mdnote.structure.sort;

import java.util.Arrays;

/**
 * @author Rhythm-2019
 * @version 1.0
 * @date 2020/8/25
 * @description 选择排序
 */
public class SelectSort {

    /**
     * 排序
     * @param source 数组
     */
    public static void sort(int[] source) {

        for (int i = 0; i < source.length - 1; i++) {
            // 选择排序的思想是不断从数组中找到最小的数字与最前面的元素交换
            // 保存最小值和索引
            int max = source[i];
            int maxIndex = i;
            // 寻找最大值, j指向被对比的数字
            for (int j = i + 1; j < source.length; j++) {
                if (max < source[j]) {
                    max = source[j];
                    maxIndex = j;;
                }
            }
            // 交换最大值
            if (maxIndex != i) {
                int temp =source[i];
                source[i] = source[maxIndex];
                source[maxIndex] = temp;
            }
        }
        System.out.println(Arrays.toString(source));
    }

    public static void main(String[] args) {
        int[] data = {11, 33, 22, 55, 12};
        sort(data);
    }
}
